package com.design.mode.template;

/**
 * 饮品抽象类
 * @Date 2023/4/3 14:36:19
 * @Author luopeng
 */
public abstract class Beverage {

    /**
     * 制作饮料的模板方法
     */
    public final void prepareBeverage() {
        boilWater();
        makeProcess();
        pourWaterToCup();
        if (isAddCondiments()) addCondiments();
    }

    /**
     * 统一执行的方法：烧水
     */
    public void boilWater(){
        System.out.println("======================烧水======================");
    }

    /**
     * 制作过程，需要子类去实现
     */
    public abstract void makeProcess();

    /**
     * 统一执行的方法：倒入杯中
     */
    public void pourWaterToCup(){
        System.out.println("======================将饮品倒入杯子中======================");
    }

    /**
     * 杯中是否需要添加配料
     * @return
     */
    public boolean isAddCondiments() {
        return true;
    }

    /**
     * 添加配料
     */
    public abstract void addCondiments();
}
